﻿using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using AudiPyme.BLL;
using System.IO;
using System.Data;
using AudiPyme.DAL;

namespace AudiPyme.UI
{
    public partial class AdTblTipAmen : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                LlenaGridView();
            }
        }

        protected void GVTipActAmen_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            this.GVTipActAmen.PageIndex = e.NewPageIndex;
            //Si hubiera una fila seleccionada para editar la deseleccionamos
            GVTipActAmen.EditIndex = -1;
            LlenaGridView();
        }

        protected void LlenaGridView()
        {
            try
            {
                ModeloContainer agenteBD = new ModeloContainer();
                //Recoge los elementos tipo amenaza disponibles en la base de conocimiento
                IQueryable<TiposAmenazas> TipAmen = TiposAmenazasFactory.RecogeTiposAmenazas();
                if (TipAmen.Count() == 0)
                {
                    MuestraMensaje("No hay Tipos de Amenazas disponibles en la base de conocimiento");
                }
                else
                {
                    GVTipActAmen.DataSource = TipAmen;
                    GVTipActAmen.DataBind();
                }
            }
            catch (Exception e1)
            {
                e1.ToString();
                MuestraMensaje("Error al actualizar los datos en la tabla");
            }
        }

        protected void GVTipActAmen_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            //Deseleccionamos la fila
            GVTipActAmen.EditIndex = -1;
            LlenaGridView();
        }

        protected void GVTipActAmen_RowEditing(object sender, GridViewEditEventArgs e)
        {
            //Seleccionamos la fila seleccionada
            GVTipActAmen.EditIndex = e.NewEditIndex;
            LlenaGridView();
        }

        protected void GVTipActAmen_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            //Comprobamos que los datos introducidos pasan el validador
            Page.Validate("Validador");
            if (Page.IsValid)
            {
                try
                {
                    //Recogemos la fila seleccionada para editar
                    GridViewRow row = GVTipActAmen.Rows[e.RowIndex];
                    //Recogemos el TextBox TipoAmenaza de la fila seleccionada
                    TextBox TxtCoste = (TextBox)row.FindControl("TxtTipoAmenaza");
                    //Recogemos el IdTipoAmenaza de la fila seleccionada
                    int IdTipoAmenaza = int.Parse(row.Cells[0].Text);
                    String TipoAmenaza = TxtCoste.Text;
                    //Actualizamos el Valor del Tipo de Amenaza
                    TiposAmenazasFactory.ActualizaTipoAmenaza(IdTipoAmenaza, TipoAmenaza);
                    //Deseleccionamos la fila
                    e.Cancel = true;
                    GVTipActAmen.EditIndex = -1;
                    //Pintamos el GridView para que aparezca el cambio
                    LlenaGridView();
                    MuestraMensaje("El Tipo de Amenaza se ha actualizado correctamente");
                }
                catch (Exception e1)
                {
                    e1.ToString();
                    MuestraMensaje("Error al actualizar el tipo de amenaza");
                }
            }
            else
            {
                MuestraMensaje("No se pudo actualizar el Criterio. Hay que rellenar todos los campos");
            }
        }

        //Método para scara por pantalla un Mensaje de información
        protected void MuestraMensaje(string Mensaje)
        {
            StringBuilder SB = new StringBuilder();
            SB.Append("alert('");
            SB.Append(Mensaje.Replace("\n", "\\n").Replace("\r", "").Replace("'", "\\'"));
            SB.Append("');");
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "showalert", SB.ToString(), true);
        }

        protected void GVTipActAmen_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                //Recogemos la fila seleccionada para editar
                GridViewRow row = GVTipActAmen.Rows[e.RowIndex];
                //Recogemos el TextBox TipoAmenaza de la fila seleccionada
                TextBox TxtCoste = (TextBox)row.FindControl("TxtTipoAmenaza");
                //Recogemos el IdTipoAmenaza de la fila seleccionada
                int IdTipoAmenaza = int.Parse(row.Cells[0].Text);
                //Eliminamos el Tipo de Amenaza y todos las filas de las BD asociadas a ella
                TiposAmenazasFactory.EliminaTipoAmenaza(IdTipoAmenaza);
                MuestraMensaje("Tipo de Amenaza eliminada correctamente");
                //Actualizamos el GridView con la nueva disposición
                LlenaGridView();
            }
            catch (Exception e1)
            {
                e1.ToString();
                MuestraMensaje("Error al eliminar el tipo de amenaza");
            }
        }

    }
}